// Copyright 2011 Jefferson Willian
// willmont7@gmail.com

#include <cstdio>

#define MAX 20

int ret;

/* Resovle o problema por meio de backtracking */
void solve(bool blocked[][MAX], bool forb[], int current, int n, int total) {
  /* Verifica se cheogu ao fim da recurssividade */
  if (current == n) {
    /* Verifica se eh o melhor resultado */
    if (total > ret)
      ret = total;
    return;
  }

  /* Verifica se o valor atual eh permitido */
  if (forb[current]) {
    solve(blocked, forb, current+1, n, total);
    return;
  }

  int backup[MAX];

  /* Verifica o resultado nao incluindo o valor atual */
  solve(blocked, forb, current+1, n, total);

  /* Verifica o resultado incluindo o valor atual */
  for (int i = 0;i < n;i++) {
    backup[i] = forb[i];
    forb[i] = blocked[current][i]?true:forb[i];
  }
  solve(blocked, forb, current+1, n, total+1);
  for (int i = 0;i < n;i++)
    forb[i] = backup[i];

  return;
}

int main() {
  int n;
  bool blocked[MAX][MAX];
  bool forb[MAX];
  int temp;
  int games = 1;

  while (scanf("%d", &n) && n != 0) {
    for (int i = 0;i < n;i++) {
      for (int j = 0;j < n;j++)
        blocked[i][j] = false;
      forb[i] = false;
      blocked[i][i] = true;
    }

    for (int i = 0;i < n;i++) {
      while (true) {
        scanf("%d", &temp);
        if (temp == 0)
          break;
        blocked[i][temp-1] = 1;
        blocked[temp-1][i] = 1;
      }
    }

    ret = 0;

    solve(blocked, forb, 0, n, 0);

    printf("Teste %d\n%d\n\n", games++, ret);
  }

  return 0;
}
